package com.baidu.service;

import com.baidu.aip.ocr.AipOcr;
import com.baidu.utils.AipOcrSample;
import org.json.JSONObject;

import java.util.HashMap;

// AipOcrService 文字识别业务处理类
public class AipOcrService {

    // 优化：免实例化对象, 单例模式
    private static AipOcrService aipOcrService;
    public static AipOcrService getAipOcrService(){
        if(aipOcrService == null) aipOcrService = new AipOcrService();
        return aipOcrService;
    }

    public AipOcr aipOcr = AipOcrSample.getAipOcr();

    // 文字识别 textDetect
    public String textDetect(byte[] img){

        // Map<K, V> K: 键的类型， V: 值的类型
        HashMap<String, String> options = new HashMap<>();
        options.put("language_type", "CHN_ENG");
        options.put("detect_direction", "true");
        options.put("detect_language", "true");
        options.put("probability", "true");

        // 高精度文字识别
        JSONObject json = aipOcr.basicAccurateGeneral(img, options);
        System.out.println(json.toString());

        return  json.toString();  // 转换为字符串
    }

    // 接口参考文档： https://cloud.baidu.com/doc/OCR/s/Nkibizxlf
    public String idCard(byte[] img){  // 身份证识别业务

        HashMap<String, String> options = new HashMap<>();
        options.put("detect_direction", "true");  // 是否检测朝向
        options.put("detect_risk", "false");  // 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能，默认不开启，即：false。可选值:true-开启；false-不开启
        String idCardSide = "front";
        //String idCardSide = "back";   //识别身份证背面
        JSONObject jsonObject = aipOcr.idcard(img, idCardSide, options);

        return jsonObject.toString();
    }

}
